<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>OpenMesh: OpenMesh::PropertyManager&lt; PROPTYPE, MeshT &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="logo_align.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="rwth_vci_rgb.jpg"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">OpenMesh
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('a02597.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#related">Related Functions</a> &#124;
<a href="a02594.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">OpenMesh::PropertyManager&lt; PROPTYPE, MeshT &gt; Class Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>This class is intended to manage the lifecycle of properties.  
 <a href="a02597.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00482_source.html">OpenMesh/Core/Utils/PropertyManager.hh</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a43cd91aff2a4679615a351547898a99e"><td class="memItemLeft" align="right" valign="top"><a id="a43cd91aff2a4679615a351547898a99e"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Value</b> = typename PROPTYPE::Value</td></tr>
<tr class="separator:a43cd91aff2a4679615a351547898a99e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56847f3fd1e0b725bd4326a08a5f0bb0"><td class="memItemLeft" align="right" valign="top"><a id="a56847f3fd1e0b725bd4326a08a5f0bb0"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>value_type</b> = typename PROPTYPE::value_type</td></tr>
<tr class="separator:a56847f3fd1e0b725bd4326a08a5f0bb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4d8bd73d83e7003bb8ca46bc9f104d3"><td class="memItemLeft" align="right" valign="top"><a id="aa4d8bd73d83e7003bb8ca46bc9f104d3"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Handle</b> = typename PROPTYPE::Handle</td></tr>
<tr class="separator:aa4d8bd73d83e7003bb8ca46bc9f104d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbb322dd2b935ce4dbdc35ec67296873"><td class="memItemLeft" align="right" valign="top"><a id="abbb322dd2b935ce4dbdc35ec67296873"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Self</b> = <a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE, MeshT &gt;</td></tr>
<tr class="separator:abbb322dd2b935ce4dbdc35ec67296873"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1ad2faa836ee1221771679314981c7d"><td class="memItemLeft" align="right" valign="top"><a id="ab1ad2faa836ee1221771679314981c7d"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>Reference</b> = typename PROPTYPE::reference</td></tr>
<tr class="separator:ab1ad2faa836ee1221771679314981c7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20b2470cbf08a5985aa47116b0a8b6c6"><td class="memItemLeft" align="right" valign="top"><a id="a20b2470cbf08a5985aa47116b0a8b6c6"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>ConstReference</b> = typename PROPTYPE::const_reference</td></tr>
<tr class="separator:a20b2470cbf08a5985aa47116b0a8b6c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a46387eb1a41dbdcb848987ce6358f8d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#a46387eb1a41dbdcb848987ce6358f8d1">PropertyManager</a> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname, bool existing)</td></tr>
<tr class="separator:a46387eb1a41dbdcb848987ce6358f8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd9bdea74cd82fba4cac786ce5f4b6af"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#afd9bdea74cd82fba4cac786ce5f4b6af">PropertyManager</a> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname)</td></tr>
<tr class="memdesc:afd9bdea74cd82fba4cac786ce5f4b6af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#afd9bdea74cd82fba4cac786ce5f4b6af">More...</a><br /></td></tr>
<tr class="separator:afd9bdea74cd82fba4cac786ce5f4b6af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a8ee99088e9730f51367b431d325aee"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#a2a8ee99088e9730f51367b431d325aee">PropertyManager</a> (const Value &amp;initial_value, <a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname)</td></tr>
<tr class="memdesc:a2a8ee99088e9730f51367b431d325aee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a2a8ee99088e9730f51367b431d325aee">More...</a><br /></td></tr>
<tr class="separator:a2a8ee99088e9730f51367b431d325aee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87d05b80c8e2abe588624c25520822bf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#a87d05b80c8e2abe588624c25520822bf">PropertyManager</a> (const <a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh)</td></tr>
<tr class="memdesc:a87d05b80c8e2abe588624c25520822bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a87d05b80c8e2abe588624c25520822bf">More...</a><br /></td></tr>
<tr class="separator:a87d05b80c8e2abe588624c25520822bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c4a25a0252e0f0f7de16007410f2b8c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#a8c4a25a0252e0f0f7de16007410f2b8c">PropertyManager</a> (const Value &amp;initial_value, const <a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh)</td></tr>
<tr class="memdesc:a8c4a25a0252e0f0f7de16007410f2b8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a8c4a25a0252e0f0f7de16007410f2b8c">More...</a><br /></td></tr>
<tr class="separator:a8c4a25a0252e0f0f7de16007410f2b8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab99f400195c4284bfde18e16570d4e9b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#ab99f400195c4284bfde18e16570d4e9b">PropertyManager</a> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, PROPTYPE property_handle)</td></tr>
<tr class="memdesc:ab99f400195c4284bfde18e16570d4e9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#ab99f400195c4284bfde18e16570d4e9b">More...</a><br /></td></tr>
<tr class="separator:ab99f400195c4284bfde18e16570d4e9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b9db615da76068d1f6ab071e7aa19c2"><td class="memItemLeft" align="right" valign="top"><a id="a4b9db615da76068d1f6ab071e7aa19c2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>PropertyManager</b> (const <a class="el" href="a02597.html">PropertyManager</a> &amp;rhs)</td></tr>
<tr class="separator:a4b9db615da76068d1f6ab071e7aa19c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1b14fd4993a46ba4a9d417279861e1c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a02597.html">PropertyManager</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#aa1b14fd4993a46ba4a9d417279861e1c">clone</a> ()</td></tr>
<tr class="memdesc:aa1b14fd4993a46ba4a9d417279861e1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create property manager referring to a copy of the current property.  <a href="#aa1b14fd4993a46ba4a9d417279861e1c">More...</a><br /></td></tr>
<tr class="separator:aa1b14fd4993a46ba4a9d417279861e1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49e9ac5ce52d0e430efe6ead12ccffbc"><td class="memItemLeft" align="right" valign="top"><a id="a49e9ac5ce52d0e430efe6ead12ccffbc"></a>
<a class="el" href="a02597.html">PropertyManager</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a02597.html">PropertyManager</a> &amp;rhs)</td></tr>
<tr class="separator:a49e9ac5ce52d0e430efe6ead12ccffbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ac1f21a36640158de02c8dffbf81ff0"><td class="memItemLeft" align="right" valign="top"><a id="a1ac1f21a36640158de02c8dffbf81ff0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a02597.html">PropertyManager</a> &amp;rhs)</td></tr>
<tr class="separator:a1ac1f21a36640158de02c8dffbf81ff0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9535daa19510a51a0b7071ded8120453"><td class="memItemLeft" align="right" valign="top"><a id="a9535daa19510a51a0b7071ded8120453"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>isValid</b> () const</td></tr>
<tr class="separator:a9535daa19510a51a0b7071ded8120453"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61deccf62ce3fdb2b4b9c5f242b78d27"><td class="memItemLeft" align="right" valign="top"><a id="a61deccf62ce3fdb2b4b9c5f242b78d27"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>operator bool</b> () const</td></tr>
<tr class="separator:a61deccf62ce3fdb2b4b9c5f242b78d27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfc2d0c6b76e06a1679239587edd2e01"><td class="memItemLeft" align="right" valign="top"><a id="acfc2d0c6b76e06a1679239587edd2e01"></a>
const PROPTYPE &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getRawProperty</b> () const</td></tr>
<tr class="separator:acfc2d0c6b76e06a1679239587edd2e01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44cde31cc2c53d5b6bf691c956b626a4"><td class="memItemLeft" align="right" valign="top"><a id="a44cde31cc2c53d5b6bf691c956b626a4"></a>
const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getName</b> () const</td></tr>
<tr class="separator:a44cde31cc2c53d5b6bf691c956b626a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d95172f0cee362353cf61870a09b7e7"><td class="memItemLeft" align="right" valign="top">PROPTYPE::reference &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#a0d95172f0cee362353cf61870a09b7e7">operator*</a> ()</td></tr>
<tr class="memdesc:a0d95172f0cee362353cf61870a09b7e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the mesh corresponding to the property.  <a href="#a0d95172f0cee362353cf61870a09b7e7">More...</a><br /></td></tr>
<tr class="separator:a0d95172f0cee362353cf61870a09b7e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72b64e0da09d2f6ecf31d91df1f03198"><td class="memItemLeft" align="right" valign="top">PROPTYPE::const_reference &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#a72b64e0da09d2f6ecf31d91df1f03198">operator*</a> () const</td></tr>
<tr class="memdesc:a72b64e0da09d2f6ecf31d91df1f03198"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access the value of the encapsulated mesh property.  <a href="#a72b64e0da09d2f6ecf31d91df1f03198">More...</a><br /></td></tr>
<tr class="separator:a72b64e0da09d2f6ecf31d91df1f03198"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54c8a19dfecfc4dea7f7561a99db9f13"><td class="memItemLeft" align="right" valign="top">PROPTYPE::reference&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#a54c8a19dfecfc4dea7f7561a99db9f13">operator[]</a> (Handle handle)</td></tr>
<tr class="memdesc:a54c8a19dfecfc4dea7f7561a99db9f13"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables convenient access to the encapsulated property.  <a href="#a54c8a19dfecfc4dea7f7561a99db9f13">More...</a><br /></td></tr>
<tr class="separator:a54c8a19dfecfc4dea7f7561a99db9f13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28974d3379f7531e964e32356404afe7"><td class="memItemLeft" align="right" valign="top">PROPTYPE::const_reference&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#a28974d3379f7531e964e32356404afe7">operator[]</a> (const Handle &amp;handle) const</td></tr>
<tr class="memdesc:a28974d3379f7531e964e32356404afe7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables convenient access to the encapsulated property.  <a href="#a28974d3379f7531e964e32356404afe7">More...</a><br /></td></tr>
<tr class="separator:a28974d3379f7531e964e32356404afe7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba0aec0d315ac14402c43fcc9543b869"><td class="memItemLeft" align="right" valign="top">PROPTYPE::reference&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#aba0aec0d315ac14402c43fcc9543b869">operator()</a> (const Handle &amp;handle=Handle())</td></tr>
<tr class="memdesc:aba0aec0d315ac14402c43fcc9543b869"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables convenient access to the encapsulated property.  <a href="#aba0aec0d315ac14402c43fcc9543b869">More...</a><br /></td></tr>
<tr class="separator:aba0aec0d315ac14402c43fcc9543b869"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78cc33c7c56360a44a675bd41879fa6b"><td class="memItemLeft" align="right" valign="top">PROPTYPE::const_reference&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02597.html#a78cc33c7c56360a44a675bd41879fa6b">operator()</a> (const Handle &amp;handle=Handle()) const</td></tr>
<tr class="memdesc:a78cc33c7c56360a44a675bd41879fa6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables convenient access to the encapsulated property.  <a href="#a78cc33c7c56360a44a675bd41879fa6b">More...</a><br /></td></tr>
<tr class="separator:a78cc33c7c56360a44a675bd41879fa6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c7b5c7063fb137ba9552afd4a0ec77f"><td class="memTemplParams" colspan="2">template&lt;typename HandleTypeIterator , typename PROP_VALUE &gt; </td></tr>
<tr class="memitem:a1c7b5c7063fb137ba9552afd4a0ec77f"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#a1c7b5c7063fb137ba9552afd4a0ec77f">set_range</a> (HandleTypeIterator begin, HandleTypeIterator end, const PROP_VALUE &amp;value)</td></tr>
<tr class="memdesc:a1c7b5c7063fb137ba9552afd4a0ec77f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Conveniently set the property for an entire range of values.  <a href="#a1c7b5c7063fb137ba9552afd4a0ec77f">More...</a><br /></td></tr>
<tr class="separator:a1c7b5c7063fb137ba9552afd4a0ec77f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcbed3201fe66c0764c26d0a44724af1"><td class="memTemplParams" colspan="2">template&lt;typename HandleTypeIterator , typename PROPTYPE_2 , typename HandleTypeIterator_2 &gt; </td></tr>
<tr class="memitem:adcbed3201fe66c0764c26d0a44724af1"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#adcbed3201fe66c0764c26d0a44724af1">copy_to</a> (HandleTypeIterator begin, HandleTypeIterator end, <a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE_2 &gt; &amp;dst_propmanager, HandleTypeIterator_2 dst_begin, HandleTypeIterator_2 dst_end) const</td></tr>
<tr class="memdesc:adcbed3201fe66c0764c26d0a44724af1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Conveniently transfer the values managed by one property manager onto the values managed by a different property manager.  <a href="#adcbed3201fe66c0764c26d0a44724af1">More...</a><br /></td></tr>
<tr class="separator:adcbed3201fe66c0764c26d0a44724af1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3a7ea9b0dee4f0b696f2877615f0cda"><td class="memTemplParams" colspan="2"><a id="af3a7ea9b0dee4f0b696f2877615f0cda"></a>
template&lt;typename RangeType , typename PROPTYPE_2 , typename RangeType_2 &gt; </td></tr>
<tr class="memitem:af3a7ea9b0dee4f0b696f2877615f0cda"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>copy_to</b> (const RangeType &amp;range, <a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE_2 &gt; &amp;dst_propmanager, const RangeType_2 &amp;dst_range) const</td></tr>
<tr class="separator:af3a7ea9b0dee4f0b696f2877615f0cda"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:ad44214212f6edb3407f8b76213bfb4f5"><td class="memItemLeft" align="right" valign="top"><a id="ad44214212f6edb3407f8b76213bfb4f5"></a>
static bool&#160;</td><td class="memItemRight" valign="bottom"><b>propertyExists</b> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname)</td></tr>
<tr class="separator:ad44214212f6edb3407f8b76213bfb4f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a905436f2131ac5811ad43400fb20fb54"><td class="memTemplParams" colspan="2">template&lt;typename RangeType , typename RangeType_2 &gt; </td></tr>
<tr class="memitem:a905436f2131ac5811ad43400fb20fb54"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#a905436f2131ac5811ad43400fb20fb54">copy</a> (const char *prop_name, <a class="el" href="a02313.html">PolyConnectivity</a> &amp;src_mesh, const RangeType &amp;src_range, <a class="el" href="a02313.html">PolyConnectivity</a> &amp;dst_mesh, const RangeType_2 &amp;dst_range)</td></tr>
<tr class="memdesc:a905436f2131ac5811ad43400fb20fb54"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy the values of a property from a source range to a target range.  <a href="#a905436f2131ac5811ad43400fb20fb54">More...</a><br /></td></tr>
<tr class="separator:a905436f2131ac5811ad43400fb20fb54"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="related"></a>
Related Functions</h2></td></tr>
<tr><td class="ititle" colspan="2"><p>(Note that these are not member functions.) </p>
</td></tr>
<tr class="memitem:a7c72dc50f42e6e4ee36d29cd29ceae85"><td class="memTemplParams" colspan="2">template&lt;typename ElementT , typename T &gt; </td></tr>
<tr class="memitem:a7c72dc50f42e6e4ee36d29cd29ceae85"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a02597.html">PropertyManager</a>&lt; typename <a class="el" href="a02505.html">HandleToPropHandle</a>&lt; ElementT, T &gt;::type &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#a7c72dc50f42e6e4ee36d29cd29ceae85">makeTemporaryProperty</a> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname)</td></tr>
<tr class="separator:a7c72dc50f42e6e4ee36d29cd29ceae85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a510b1f70ae8b69d9c4639b74c38eebba"><td class="memTemplParams" colspan="2">template&lt;typename ElementT , typename T &gt; </td></tr>
<tr class="memitem:a510b1f70ae8b69d9c4639b74c38eebba"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a02597.html">PropertyManager</a>&lt; typename <a class="el" href="a02505.html">HandleToPropHandle</a>&lt; ElementT, T &gt;::type &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#a510b1f70ae8b69d9c4639b74c38eebba">makeTemporaryProperty</a> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh)</td></tr>
<tr class="separator:a510b1f70ae8b69d9c4639b74c38eebba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a552b239c7cfa69ce7163417787cf37bf"><td class="memTemplParams" colspan="2">template&lt;typename ElementT , typename T &gt; </td></tr>
<tr class="memitem:a552b239c7cfa69ce7163417787cf37bf"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#a552b239c7cfa69ce7163417787cf37bf">hasProperty</a> (const <a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname)</td></tr>
<tr class="separator:a552b239c7cfa69ce7163417787cf37bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d0e0ad75218837f7ab7bff87fd6f24d"><td class="memTemplParams" colspan="2">template&lt;typename ElementT , typename T &gt; </td></tr>
<tr class="memitem:a8d0e0ad75218837f7ab7bff87fd6f24d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a02597.html">PropertyManager</a>&lt; typename <a class="el" href="a02505.html">HandleToPropHandle</a>&lt; ElementT, T &gt;::type &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#a8d0e0ad75218837f7ab7bff87fd6f24d">getProperty</a> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname)</td></tr>
<tr class="separator:a8d0e0ad75218837f7ab7bff87fd6f24d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add87d369da580fe875ce77472d80f336"><td class="memTemplParams" colspan="2">template&lt;typename ElementT , typename T &gt; </td></tr>
<tr class="memitem:add87d369da580fe875ce77472d80f336"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a02597.html">PropertyManager</a>&lt; typename <a class="el" href="a02505.html">HandleToPropHandle</a>&lt; ElementT, T &gt;::type &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#add87d369da580fe875ce77472d80f336">getOrMakeProperty</a> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname)</td></tr>
<tr class="separator:add87d369da580fe875ce77472d80f336"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a124b1e945be6f5188a3bfab685018008"><td class="memTemplParams" colspan="2">template&lt;typename PROPTYPE &gt; </td></tr>
<tr class="memitem:a124b1e945be6f5188a3bfab685018008"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#a124b1e945be6f5188a3bfab685018008">makePropertyManagerFromNew</a> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname)</td></tr>
<tr class="separator:a124b1e945be6f5188a3bfab685018008"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a0a645ca6dc88a5d315e9a151c5d61b"><td class="memTemplParams" colspan="2">template&lt;typename PROPTYPE , typename MeshT  = int&gt; </td></tr>
<tr class="memitem:a6a0a645ca6dc88a5d315e9a151c5d61b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE, MeshT &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#a6a0a645ca6dc88a5d315e9a151c5d61b">makePropertyManagerFromExisting</a> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname)</td></tr>
<tr class="separator:a6a0a645ca6dc88a5d315e9a151c5d61b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbe75e98e92fe82e86ee8105a68108d5"><td class="memTemplParams" colspan="2">template&lt;typename PROPTYPE , typename MeshT  = int&gt; </td></tr>
<tr class="memitem:acbe75e98e92fe82e86ee8105a68108d5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE, MeshT &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#acbe75e98e92fe82e86ee8105a68108d5">makePropertyManagerFromExistingOrNew</a> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname)</td></tr>
<tr class="separator:acbe75e98e92fe82e86ee8105a68108d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30e18639a7573eaa6295e26c33c48109"><td class="memTemplParams" colspan="2">template&lt;typename PROPTYPE , typename ITERATOR_TYPE , typename PROP_VALUE &gt; </td></tr>
<tr class="memitem:a30e18639a7573eaa6295e26c33c48109"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#a30e18639a7573eaa6295e26c33c48109">makePropertyManagerFromExistingOrNew</a> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname, const ITERATOR_TYPE &amp;begin, const ITERATOR_TYPE &amp;end, const PROP_VALUE &amp;init_value)</td></tr>
<tr class="separator:a30e18639a7573eaa6295e26c33c48109"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18ca68cb05137e40cf43a2b0096c92db"><td class="memTemplParams" colspan="2">template&lt;typename PROPTYPE , typename ITERATOR_RANGE , typename PROP_VALUE &gt; </td></tr>
<tr class="memitem:a18ca68cb05137e40cf43a2b0096c92db"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#a18ca68cb05137e40cf43a2b0096c92db">makePropertyManagerFromExistingOrNew</a> (<a class="el" href="a02313.html">PolyConnectivity</a> &amp;mesh, const char *propname, const ITERATOR_RANGE &amp;range, const PROP_VALUE &amp;init_value)</td></tr>
<tr class="separator:a18ca68cb05137e40cf43a2b0096c92db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a624c702d7caca52693790995d4e7e36a"><td class="memTemplParams" colspan="2">template&lt;typename MeshT &gt; </td></tr>
<tr class="memitem:a624c702d7caca52693790995d4e7e36a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a02597.html">PropertyManager</a>&lt; <a class="el" href="a02553.html">OpenMesh::VPropHandleT</a>&lt; typename MeshT::Point &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#a624c702d7caca52693790995d4e7e36a">getPointsProperty</a> (MeshT &amp;mesh)</td></tr>
<tr class="separator:a624c702d7caca52693790995d4e7e36a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c29dc453a6bbe9a580f0dd2b1c5215c"><td class="memTemplParams" colspan="2">template&lt;typename MeshT &gt; </td></tr>
<tr class="memitem:a2c29dc453a6bbe9a580f0dd2b1c5215c"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a02609.html">ConstPropertyViewer</a>&lt; <a class="el" href="a02553.html">OpenMesh::VPropHandleT</a>&lt; typename MeshT::Point &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a02597.html#a2c29dc453a6bbe9a580f0dd2b1c5215c">getPointsProperty</a> (const MeshT &amp;mesh)</td></tr>
<tr class="separator:a2c29dc453a6bbe9a580f0dd2b1c5215c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename PROPTYPE, typename MeshT = int&gt;<br />
class OpenMesh::PropertyManager&lt; PROPTYPE, MeshT &gt;</h3>

<p>This class is intended to manage the lifecycle of properties. </p>
<p>It also defines convenience operators to access the encapsulated property's value.</p>
<p>It is recommended to use the factory functions <a class="el" href="a02597.html#a7c72dc50f42e6e4ee36d29cd29ceae85">makeTemporaryProperty()</a>, <a class="el" href="a02597.html#a8d0e0ad75218837f7ab7bff87fd6f24d">getProperty()</a>, and <a class="el" href="a02597.html#add87d369da580fe875ce77472d80f336">getOrMakeProperty()</a> to construct a <a class="el" href="a02597.html" title="This class is intended to manage the lifecycle of properties. ">PropertyManager</a>, e.g.</p>
<p>Note that the second template parameter is depcretated.</p>
<div class="fragment"><div class="line">{</div><div class="line">    TriMesh mesh;</div><div class="line">    <span class="keyword">auto</span> visited = makeTemporaryProperty&lt;VertexHandle, bool&gt;(mesh);</div><div class="line"></div><div class="line">    <span class="keywordflow">for</span> (<span class="keyword">auto</span> vh : mesh.vertices()) {</div><div class="line">        <span class="keywordflow">if</span> (!visited[vh]) {</div><div class="line">            visitComponent(mesh, vh, visited);</div><div class="line">        }</div><div class="line">    }</div><div class="line">    <span class="comment">// The property is automatically removed at the end of the scope</span></div><div class="line">}</div></div><!-- fragment --> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a46387eb1a41dbdcb848987ce6358f8d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46387eb1a41dbdcb848987ce6358f8d1">&#9670;&nbsp;</a></span>PropertyManager() <span class="overload">[1/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::<a class="el" href="a02597.html">PropertyManager</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>propname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>existing</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="a01227.html#_deprecated000013">Deprecated:</a></b></dt><dd>Use a constructor without <code>existing</code> and check existance with <a class="el" href="a02597.html#a552b239c7cfa69ce7163417787cf37bf">hasProperty()</a> instead.</dd></dl>
<p>Constructor.</p>
<p>Throws an <code>std::runtime_error</code> if <code>existing</code> is true and no property named <code>propname</code> of the appropriate property type exists.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>The mesh on which to create the property. </td></tr>
    <tr><td class="paramname">propname</td><td>The name of the property. </td></tr>
    <tr><td class="paramname">existing</td><td>If false, a new property is created and its lifecycle is managed (i.e. the property is deleted upon destruction of the <a class="el" href="a02597.html" title="This class is intended to manage the lifecycle of properties. ">PropertyManager</a> instance). If true, the instance merely acts as a convenience wrapper around an existing property with no lifecycle management whatsoever.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a02597.html#add87d369da580fe875ce77472d80f336">PropertyManager::getOrMakeProperty</a>, <a class="el" href="a02597.html#a8d0e0ad75218837f7ab7bff87fd6f24d">PropertyManager::getProperty</a>, <a class="el" href="a02597.html#a7c72dc50f42e6e4ee36d29cd29ceae85">PropertyManager::makeTemporaryProperty</a> </dd></dl>

</div>
</div>
<a id="afd9bdea74cd82fba4cac786ce5f4b6af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd9bdea74cd82fba4cac786ce5f4b6af">&#9670;&nbsp;</a></span>PropertyManager() <span class="overload">[2/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::<a class="el" href="a02597.html">PropertyManager</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>propname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructor. </p>
<p>Asks for a property with name propname and creates one if none exists. Lifetime is not managed.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>The mesh on which to create the property. </td></tr>
    <tr><td class="paramname">propname</td><td>The name of the property. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a2a8ee99088e9730f51367b431d325aee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a8ee99088e9730f51367b431d325aee">&#9670;&nbsp;</a></span>PropertyManager() <span class="overload">[3/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::<a class="el" href="a02597.html">PropertyManager</a> </td>
          <td>(</td>
          <td class="paramtype">const Value &amp;&#160;</td>
          <td class="paramname"><em>initial_value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>propname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructor. </p>
<p>Asks for a property with name propname and creates one if none exists. Lifetime is not managed.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">initial_value</td><td>If the proeprty is newly created, it will be initialized with initial_value. If the property already existed, nothing is changes. </td></tr>
    <tr><td class="paramname">mesh</td><td>The mesh on which to create the property. </td></tr>
    <tr><td class="paramname">propname</td><td>The name of the property. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a87d05b80c8e2abe588624c25520822bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a87d05b80c8e2abe588624c25520822bf">&#9670;&nbsp;</a></span>PropertyManager() <span class="overload">[4/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::<a class="el" href="a02597.html">PropertyManager</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructor. </p>
<p>Create an anonymous property. Lifetime is managed.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>The mesh on which to create the property. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a8c4a25a0252e0f0f7de16007410f2b8c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c4a25a0252e0f0f7de16007410f2b8c">&#9670;&nbsp;</a></span>PropertyManager() <span class="overload">[5/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::<a class="el" href="a02597.html">PropertyManager</a> </td>
          <td>(</td>
          <td class="paramtype">const Value &amp;&#160;</td>
          <td class="paramname"><em>initial_value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructor. </p>
<p>Create an anonymous property. Lifetime is managed.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">initial_value</td><td>The property will be initialized with initial_value. </td></tr>
    <tr><td class="paramname">mesh</td><td>The mesh on which to create the property. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ab99f400195c4284bfde18e16570d4e9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab99f400195c4284bfde18e16570d4e9b">&#9670;&nbsp;</a></span>PropertyManager() <span class="overload">[6/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::<a class="el" href="a02597.html">PropertyManager</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">PROPTYPE&#160;</td>
          <td class="paramname"><em>property_handle</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructor. </p>
<p>Create a wrapper around an existing property. Lifetime is not managed.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>The mesh on which to create the property. </td></tr>
    <tr><td class="paramname">property_handle</td><td>Handle to an existing property that should be wrapped. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa1b14fd4993a46ba4a9d417279861e1c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1b14fd4993a46ba4a9d417279861e1c">&#9670;&nbsp;</a></span>clone()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">PropertyManager</a> <a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::clone </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Create property manager referring to a copy of the current property. </p>
<p>This can be used to explicitely create a copy of a named property. The cloned property will be unnamed. </p>

</div>
</div>
<a id="a905436f2131ac5811ad43400fb20fb54"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a905436f2131ac5811ad43400fb20fb54">&#9670;&nbsp;</a></span>copy()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<div class="memtemplate">
template&lt;typename RangeType , typename RangeType_2 &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void <a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::copy </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>prop_name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>src_mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const RangeType &amp;&#160;</td>
          <td class="paramname"><em>src_range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>dst_mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const RangeType_2 &amp;&#160;</td>
          <td class="paramname"><em>dst_range</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Copy the values of a property from a source range to a target range. </p>
<p>The source range must not be smaller than the target range.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">prop_name</td><td>Name of the property to copy. Must exist on the source mesh. Will be created on the target mesh if it doesn't exist.</td></tr>
    <tr><td class="paramname">src_mesh</td><td>Source mesh from which to copy. </td></tr>
    <tr><td class="paramname">src_range</td><td>Source range which to copy. Must not be smaller than dst_range. </td></tr>
    <tr><td class="paramname">dst_mesh</td><td>Destination mesh on which to copy. </td></tr>
    <tr><td class="paramname">dst_range</td><td>Destination range. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="adcbed3201fe66c0764c26d0a44724af1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adcbed3201fe66c0764c26d0a44724af1">&#9670;&nbsp;</a></span>copy_to()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<div class="memtemplate">
template&lt;typename HandleTypeIterator , typename PROPTYPE_2 , typename HandleTypeIterator_2 &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::copy_to </td>
          <td>(</td>
          <td class="paramtype">HandleTypeIterator&#160;</td>
          <td class="paramname"><em>begin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">HandleTypeIterator&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE_2 &gt; &amp;&#160;</td>
          <td class="paramname"><em>dst_propmanager</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">HandleTypeIterator_2&#160;</td>
          <td class="paramname"><em>dst_begin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">HandleTypeIterator_2&#160;</td>
          <td class="paramname"><em>dst_end</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Conveniently transfer the values managed by one property manager onto the values managed by a different property manager. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">begin</td><td>Start iterator. Needs to dereference to HandleType. Will be used with this property manager. </td></tr>
    <tr><td class="paramname">end</td><td>End iterator. (Exclusive.) Will be used with this property manager. </td></tr>
    <tr><td class="paramname">dst_propmanager</td><td>The destination property manager. </td></tr>
    <tr><td class="paramname">dst_begin</td><td>Start iterator. Needs to dereference to the HandleType of dst_propmanager. Will be used with dst_propmanager. </td></tr>
    <tr><td class="paramname">dst_end</td><td>End iterator. (Exclusive.) Will be used with dst_propmanager. Used to double check the bounds. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="aba0aec0d315ac14402c43fcc9543b869"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba0aec0d315ac14402c43fcc9543b869">&#9670;&nbsp;</a></span>operator()() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">PROPTYPE::reference <a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::operator() </td>
          <td>(</td>
          <td class="paramtype">const Handle &amp;&#160;</td>
          <td class="paramname"><em>handle</em> = <code>Handle()</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables convenient access to the encapsulated property. </p>
<p>For a usage example see this class' documentation.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">handle</td><td>A handle of the appropriate handle type. (I.e. <code><a class="el" href="a02241.html" title="Handle for a vertex entity. ">VertexHandle</a></code> for <code><a class="el" href="a02553.html" title="Handle representing a vertex property. ">VPropHandleT</a></code>, etc.) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a78cc33c7c56360a44a675bd41879fa6b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78cc33c7c56360a44a675bd41879fa6b">&#9670;&nbsp;</a></span>operator()() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">PROPTYPE::const_reference <a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::operator() </td>
          <td>(</td>
          <td class="paramtype">const Handle &amp;&#160;</td>
          <td class="paramname"><em>handle</em> = <code>Handle()</code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables convenient access to the encapsulated property. </p>
<p>For a usage example see this class' documentation.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">handle</td><td>A handle of the appropriate handle type. (I.e. <code><a class="el" href="a02241.html" title="Handle for a vertex entity. ">VertexHandle</a></code> for <code><a class="el" href="a02553.html" title="Handle representing a vertex property. ">VPropHandleT</a></code>, etc.) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a0d95172f0cee362353cf61870a09b7e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d95172f0cee362353cf61870a09b7e7">&#9670;&nbsp;</a></span>operator*() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">PROPTYPE::reference&amp; <a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::operator* </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the mesh corresponding to the property. </p>
<p>If you use <a class="el" href="a02597.html" title="This class is intended to manage the lifecycle of properties. ">PropertyManager</a> without second template parameter (recommended) you need to specify the actual mesh type when using this function, e.g.: </p><div class="fragment"><div class="line">   {</div><div class="line">       TriMesh mesh;</div><div class="line">       <span class="keyword">auto</span> visited = VProp&lt;bool&gt;(mesh);</div><div class="line">       TriMesh&amp; mesh_ref = visited.getMesh&lt;TriMesh&gt;();</div><div class="line">   }</div><div class="line">  </div><div class="line">  /</div><div class="line"><span class="keyword">template</span> &lt;<span class="keyword">typename</span> MeshType &gt;</div><div class="line"><span class="keyword">const</span> MeshType&amp; getMesh()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">dynamic_cast&lt;</span><span class="keyword">const </span>MeshType&amp;<span class="keyword">&gt;</span>(mesh_); }</div><div class="line"></div><div class="line"><span class="keyword">const</span> MeshT&amp; getMesh()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">dynamic_cast&lt;</span><span class="keyword">const </span>MeshT&amp;<span class="keyword">&gt;</span>(mesh_); }</div><div class="line"></div><div class="line"></div><div class="line">OM_DEPRECATED(<span class="stringliteral">&quot;retain no longer has any effect. Instead, named properties are always retained, while unnamed ones are not.&quot;</span>)</div><div class="line">void retain(<span class="keywordtype">bool</span> = true) {}</div><div class="line"></div><div class="line"><a class="code" href="a02597.html#a46387eb1a41dbdcb848987ce6358f8d1">PropertyManager</a>(PropertyManager &amp;&amp;rhs)</div><div class="line">  :</div><div class="line">    mesh_(rhs.mesh_),</div><div class="line">    prop_(rhs.prop_),</div><div class="line">    retain_(rhs.retain_),</div><div class="line">    name_(rhs.name_)</div><div class="line">{</div><div class="line">  <span class="keywordflow">if</span> (!rhs.retain_)</div><div class="line">    rhs.prop_.invalidate(); <span class="comment">// only invalidate unnamed properties</span></div><div class="line">}</div><div class="line"></div><div class="line"><a class="code" href="a02597.html#a46387eb1a41dbdcb848987ce6358f8d1">PropertyManager</a>&amp; operator=(PropertyManager&amp;&amp; rhs)</div><div class="line">{</div><div class="line">    <span class="keywordflow">if</span> ((&amp;mesh_ != &amp;rhs.mesh_) || (prop_ != rhs.prop_))</div><div class="line">    {</div><div class="line">      <span class="keywordflow">if</span> (rhs.retain_)</div><div class="line">      {</div><div class="line">        <span class="comment">// retained properties cannot be invalidated. Copy instead</span></div><div class="line">        Storage::copy(rhs, *<span class="keyword">this</span>);</div><div class="line">      }</div><div class="line">      <span class="keywordflow">else</span></div><div class="line">      {</div><div class="line">        <span class="comment">// swap the data stored in the properties</span></div><div class="line">        Storage::swap(rhs, *<span class="keyword">this</span>);</div><div class="line">        <span class="comment">// remove the property from rhs</span></div><div class="line">        rhs.mesh().remove_property(rhs.prop_);</div><div class="line">        <span class="comment">// invalidate prop_</span></div><div class="line">        rhs.prop_.invalidate();</div><div class="line">      }</div><div class="line">    }</div><div class="line">    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <a class="code" href="a02597.html#a46387eb1a41dbdcb848987ce6358f8d1">PropertyManager</a> createIfNotExists(PolyConnectivity &amp;mesh, <span class="keyword">const</span> <span class="keywordtype">char</span> *propname) {</div><div class="line">    <span class="keywordflow">return</span> <a class="code" href="a02597.html#a46387eb1a41dbdcb848987ce6358f8d1">PropertyManager</a>(mesh, propname);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> PROP_VALUE, <span class="keyword">typename</span> ITERATOR_TYPE&gt;</div><div class="line"><span class="keyword">static</span> <a class="code" href="a02597.html#a46387eb1a41dbdcb848987ce6358f8d1">PropertyManager</a> createIfNotExists(PolyConnectivity &amp;mesh, <span class="keyword">const</span> <span class="keywordtype">char</span> *propname,</div><div class="line">        <span class="keyword">const</span> ITERATOR_TYPE &amp;begin, <span class="keyword">const</span> ITERATOR_TYPE &amp;end,</div><div class="line">        <span class="keyword">const</span> PROP_VALUE &amp;init_value) {</div><div class="line">    <span class="keyword">const</span> <span class="keywordtype">bool</span> exists = propertyExists(mesh, propname);</div><div class="line">    <a class="code" href="a02597.html#a46387eb1a41dbdcb848987ce6358f8d1">PropertyManager</a> pm(mesh, propname, exists);</div><div class="line">    pm.retain();</div><div class="line">    <span class="keywordflow">if</span> (!exists)</div><div class="line">        pm.set_range(begin, end, init_value);</div><div class="line">    <span class="keywordflow">return</span> std::move(pm);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> PROP_VALUE, <span class="keyword">typename</span> ITERATOR_RANGE&gt;</div><div class="line"><span class="keyword">static</span> <a class="code" href="a02597.html#a46387eb1a41dbdcb848987ce6358f8d1">PropertyManager</a> createIfNotExists(PolyConnectivity &amp;mesh, <span class="keyword">const</span> <span class="keywordtype">char</span> *propname,</div><div class="line">        <span class="keyword">const</span> ITERATOR_RANGE &amp;range, <span class="keyword">const</span> PROP_VALUE &amp;init_value) {</div><div class="line">    <span class="keywordflow">return</span> createIfNotExists(</div><div class="line">            mesh, propname, range.begin(), range.end(), init_value);</div><div class="line">}</div><div class="line"></div><div class="line"></div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>This method is only used for mesh properties. </dd></dl>

</div>
</div>
<a id="a72b64e0da09d2f6ecf31d91df1f03198"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a72b64e0da09d2f6ecf31d91df1f03198">&#9670;&nbsp;</a></span>operator*() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">PROPTYPE::const_reference&amp; <a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::operator* </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Access the value of the encapsulated mesh property. </p>
<p>Example: </p><div class="fragment"><div class="line">PolyMesh m;</div><div class="line"><span class="keyword">auto</span> description = getProperty&lt;void, std::string&gt;(m, <span class="stringliteral">&quot;description&quot;</span>);</div><div class="line">std::cout &lt;&lt; *description &lt;&lt; std::endl;</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>This method is only used for mesh properties. </dd></dl>

</div>
</div>
<a id="a54c8a19dfecfc4dea7f7561a99db9f13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a54c8a19dfecfc4dea7f7561a99db9f13">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">PROPTYPE::reference <a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::operator[] </td>
          <td>(</td>
          <td class="paramtype">Handle&#160;</td>
          <td class="paramname"><em>handle</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables convenient access to the encapsulated property. </p>
<p>For a usage example see this class' documentation.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">handle</td><td>A handle of the appropriate handle type. (I.e. <code><a class="el" href="a02241.html" title="Handle for a vertex entity. ">VertexHandle</a></code> for <code><a class="el" href="a02553.html" title="Handle representing a vertex property. ">VPropHandleT</a></code>, etc.) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a28974d3379f7531e964e32356404afe7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28974d3379f7531e964e32356404afe7">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">PROPTYPE::const_reference <a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::operator[] </td>
          <td>(</td>
          <td class="paramtype">const Handle &amp;&#160;</td>
          <td class="paramname"><em>handle</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables convenient access to the encapsulated property. </p>
<p>For a usage example see this class' documentation.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">handle</td><td>A handle of the appropriate handle type. (I.e. <code><a class="el" href="a02241.html" title="Handle for a vertex entity. ">VertexHandle</a></code> for <code><a class="el" href="a02553.html" title="Handle representing a vertex property. ">VPropHandleT</a></code>, etc.) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a1c7b5c7063fb137ba9552afd4a0ec77f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c7b5c7063fb137ba9552afd4a0ec77f">&#9670;&nbsp;</a></span>set_range()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE, typename MeshT = int&gt; </div>
<div class="memtemplate">
template&lt;typename HandleTypeIterator , typename PROP_VALUE &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="a02597.html">OpenMesh::PropertyManager</a>&lt; PROPTYPE, MeshT &gt;::set_range </td>
          <td>(</td>
          <td class="paramtype">HandleTypeIterator&#160;</td>
          <td class="paramname"><em>begin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">HandleTypeIterator&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const PROP_VALUE &amp;&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Conveniently set the property for an entire range of values. </p>
<p>Examples: </p><div class="fragment"><div class="line">MeshT mesh;</div><div class="line">PropertyManager&lt;VPropHandleT&lt;double&gt;&gt; distance(</div><div class="line">    mesh, <span class="stringliteral">&quot;distance.plugin-example.i8.informatik.rwth-aachen.de&quot;</span>);</div><div class="line">distance.set_range(</div><div class="line">    mesh.vertices_begin(), mesh.vertices_end(),</div><div class="line">    std::numeric_limits&lt;double&gt;::infinity());</div></div><!-- fragment --><p> or </p><div class="fragment"><div class="line">MeshT::VertexHandle vh;</div><div class="line">distance.<a class="code" href="a02597.html#a1c7b5c7063fb137ba9552afd4a0ec77f">set_range</a>(</div><div class="line">    mesh.vv_begin(vh), mesh.vv_end(vh),</div><div class="line">    std::numeric_limits&lt;double&gt;::infinity());</div></div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">begin</td><td>Start iterator. Needs to dereference to HandleType. </td></tr>
    <tr><td class="paramname">end</td><td>End iterator. (Exclusive.) </td></tr>
    <tr><td class="paramname">value</td><td>The value the range will be set to. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="add87d369da580fe875ce77472d80f336"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add87d369da580fe875ce77472d80f336">&#9670;&nbsp;</a></span>getOrMakeProperty()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ElementT , typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">PropertyManager</a>&lt; typename <a class="el" href="a02505.html">HandleToPropHandle</a>&lt; ElementT, T &gt;::type &gt; getOrMakeProperty </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>propname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Obtains a handle to a named property if it exists or creates a new one otherwise.</p>
<p>Used for creating or accessing permanent properties.</p>
<p>Example: </p><div class="fragment"><div class="line">PolyMesh m;</div><div class="line">{</div><div class="line">    <span class="keyword">auto</span> is_quad = getOrMakeProperty&lt;FaceHandle, bool&gt;(m, <span class="stringliteral">&quot;is_quad&quot;</span>);</div><div class="line">    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; fh : m.faces()) {</div><div class="line">        is_quad[fh] = (m.valence(fh) == 4);</div><div class="line">    }</div><div class="line">    <span class="comment">// The property remains on the mesh after the end of the scope.</span></div><div class="line">}</div><div class="line">{</div><div class="line">    <span class="comment">// Retrieve the property from the previous scope.</span></div><div class="line">    <span class="keyword">auto</span> is_quad = getOrMakeProperty&lt;FaceHandle, bool&gt;(m, <span class="stringliteral">&quot;is_quad&quot;</span>);</div><div class="line">    <span class="comment">// Use is_quad here.</span></div><div class="line">}</div></div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>The mesh on which the property is created </td></tr>
    <tr><td class="paramname">propname</td><td>The name of the created property </td></tr>
  </table>
  </dd>
</dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">ElementT</td><td>Element type of the created property, e.g. <a class="el" href="a02241.html" title="Handle for a vertex entity. ">VertexHandle</a>, <a class="el" href="a02245.html" title="Handle for a halfedge entity. ">HalfedgeHandle</a>, etc. </td></tr>
    <tr><td class="paramname">T</td><td>Value type of the created property, e.g., <code>double</code>, <code>int</code>, etc. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="a02597.html" title="This class is intended to manage the lifecycle of properties. ">PropertyManager</a> wrapping the property </dd></dl>

</div>
</div>
<a id="a624c702d7caca52693790995d4e7e36a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a624c702d7caca52693790995d4e7e36a">&#9670;&nbsp;</a></span>getPointsProperty() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename MeshT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">PropertyManager</a>&lt; <a class="el" href="a02553.html">OpenMesh::VPropHandleT</a>&lt; typename MeshT::Point &gt; &gt; getPointsProperty </td>
          <td>(</td>
          <td class="paramtype">MeshT &amp;&#160;</td>
          <td class="paramname"><em>mesh</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Returns a convenience wrapper around the points property of a mesh. </p>

</div>
</div>
<a id="a2c29dc453a6bbe9a580f0dd2b1c5215c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c29dc453a6bbe9a580f0dd2b1c5215c">&#9670;&nbsp;</a></span>getPointsProperty() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename MeshT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02609.html">ConstPropertyViewer</a>&lt; <a class="el" href="a02553.html">OpenMesh::VPropHandleT</a>&lt; typename MeshT::Point &gt; &gt; getPointsProperty </td>
          <td>(</td>
          <td class="paramtype">const MeshT &amp;&#160;</td>
          <td class="paramname"><em>mesh</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Returns a convenience wrapper around the points property of a mesh that only allows const access. </p>

</div>
</div>
<a id="a8d0e0ad75218837f7ab7bff87fd6f24d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d0e0ad75218837f7ab7bff87fd6f24d">&#9670;&nbsp;</a></span>getProperty()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ElementT , typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">PropertyManager</a>&lt; typename <a class="el" href="a02505.html">HandleToPropHandle</a>&lt; ElementT, T &gt;::type &gt; getProperty </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>propname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Obtains a handle to a named property.</p>
<p>Example: </p><div class="fragment"><div class="line">PolyMesh m;</div><div class="line">{</div><div class="line">    <span class="keywordflow">try</span> {</div><div class="line">        <span class="keyword">auto</span> is_quad = getProperty&lt;FaceHandle, bool&gt;(m, <span class="stringliteral">&quot;is_quad&quot;</span>);</div><div class="line">        <span class="comment">// Use is_quad here.</span></div><div class="line">    }</div><div class="line">    <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::runtime_error&amp; e) {</div><div class="line">        <span class="comment">// There is no is_quad face property on the mesh.</span></div><div class="line">    }</div><div class="line">}</div></div><!-- fragment --><dl class="section pre"><dt>Precondition</dt><dd>Property with the name <code>propname</code> of matching type exists. </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if no property with the name <code>propname</code> of matching type exists. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>The mesh on which the property is created </td></tr>
    <tr><td class="paramname">propname</td><td>The name of the created property </td></tr>
  </table>
  </dd>
</dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">ElementT</td><td>Element type of the created property, e.g. <a class="el" href="a02241.html" title="Handle for a vertex entity. ">VertexHandle</a>, <a class="el" href="a02245.html" title="Handle for a halfedge entity. ">HalfedgeHandle</a>, etc. </td></tr>
    <tr><td class="paramname">T</td><td>Value type of the created property, e.g., <code>double</code>, <code>int</code>, etc. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="a02597.html" title="This class is intended to manage the lifecycle of properties. ">PropertyManager</a> wrapping the property </dd></dl>

</div>
</div>
<a id="a552b239c7cfa69ce7163417787cf37bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a552b239c7cfa69ce7163417787cf37bf">&#9670;&nbsp;</a></span>hasProperty()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ElementT , typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool hasProperty </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>propname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Tests whether a property with the given element type, value type, and name is present on the given mesh.</p>
<ul>
<li>Example: <div class="fragment"><div class="line">PolyMesh m;</div><div class="line"><span class="keywordflow">if</span> (hasProperty&lt;FaceHandle, bool&gt;(m, <span class="stringliteral">&quot;is_quad&quot;</span>)) {</div><div class="line">    <span class="comment">// We now know the property exists: getProperty won&#39;t throw.</span></div><div class="line">    <span class="keyword">auto</span> is_quad = getProperty&lt;FaceHandle, bool&gt;(m, <span class="stringliteral">&quot;is_quad&quot;</span>);</div><div class="line">    <span class="comment">// Use is_quad here.</span></div><div class="line">}</div></div><!-- fragment --></li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>The mesh in question </td></tr>
    <tr><td class="paramname">propname</td><td>The property name of the expected property </td></tr>
  </table>
  </dd>
</dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">ElementT</td><td>Element type of the expected property, e.g. <a class="el" href="a02241.html" title="Handle for a vertex entity. ">VertexHandle</a>, <a class="el" href="a02245.html" title="Handle for a halfedge entity. ">HalfedgeHandle</a>, etc. </td></tr>
    <tr><td class="paramname">T</td><td>Value type of the expected property, e.g., <code>double</code>, <code>int</code>, etc. </td></tr>
    <tr><td class="paramname">MeshT</td><td>Type of the mesh. Can often be inferred from <code>mesh</code> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a6a0a645ca6dc88a5d315e9a151c5d61b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a0a645ca6dc88a5d315e9a151c5d61b">&#9670;&nbsp;</a></span>makePropertyManagerFromExisting()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE , typename MeshT  = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE, MeshT &gt; makePropertyManagerFromExisting </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>propname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="a01227.html#_deprecated000011">Deprecated:</a></b></dt><dd>Use <a class="el" href="a02597.html#a8d0e0ad75218837f7ab7bff87fd6f24d">getProperty()</a> instead.</dd></dl>
<p>Creates a non-owning wrapper for an existing mesh property (no lifecycle management).</p>
<p>Intended for convenient access.</p>
<dl class="section pre"><dt>Precondition</dt><dd>Property with the name <code>propname</code> of matching type exists. </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if no property with the name <code>propname</code> of matching type exists. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="acbe75e98e92fe82e86ee8105a68108d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acbe75e98e92fe82e86ee8105a68108d5">&#9670;&nbsp;</a></span>makePropertyManagerFromExistingOrNew() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE , typename MeshT  = int&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE, MeshT &gt; makePropertyManagerFromExistingOrNew </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>propname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="a01227.html#_deprecated000012">Deprecated:</a></b></dt><dd>Use <a class="el" href="a02597.html#add87d369da580fe875ce77472d80f336">getOrMakeProperty()</a> instead.</dd></dl>
<p>Creates a non-owning wrapper for a mesh property (no lifecycle management). If the given property does not exist, it is created.</p>
<p>Intended for creating or accessing persistent properties. </p>

</div>
</div>
<a id="a30e18639a7573eaa6295e26c33c48109"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a30e18639a7573eaa6295e26c33c48109">&#9670;&nbsp;</a></span>makePropertyManagerFromExistingOrNew() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE , typename ITERATOR_TYPE , typename PROP_VALUE &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE &gt; makePropertyManagerFromExistingOrNew </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>propname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const ITERATOR_TYPE &amp;&#160;</td>
          <td class="paramname"><em>begin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const ITERATOR_TYPE &amp;&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const PROP_VALUE &amp;&#160;</td>
          <td class="paramname"><em>init_value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Like the two parameter version of <a class="el" href="a02597.html#acbe75e98e92fe82e86ee8105a68108d5">makePropertyManagerFromExistingOrNew()</a> except it initializes the property with the specified value over the specified range if it needs to be created. If the property already exists, this function has the exact same effect as the two parameter version.</p>
<p>Creates a non-owning wrapper for a mesh property (no lifecycle management). If the given property does not exist, it is created.</p>
<p>Intended for creating or accessing persistent properties. </p>

</div>
</div>
<a id="a18ca68cb05137e40cf43a2b0096c92db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18ca68cb05137e40cf43a2b0096c92db">&#9670;&nbsp;</a></span>makePropertyManagerFromExistingOrNew() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE , typename ITERATOR_RANGE , typename PROP_VALUE &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE &gt; makePropertyManagerFromExistingOrNew </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>propname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const ITERATOR_RANGE &amp;&#160;</td>
          <td class="paramname"><em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const PROP_VALUE &amp;&#160;</td>
          <td class="paramname"><em>init_value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Like the two parameter version of <a class="el" href="a02597.html#acbe75e98e92fe82e86ee8105a68108d5">makePropertyManagerFromExistingOrNew()</a> except it initializes the property with the specified value over the specified range if it needs to be created. If the property already exists, this function has the exact same effect as the two parameter version.</p>
<p>Creates a non-owning wrapper for a mesh property (no lifecycle management). If the given property does not exist, it is created.</p>
<p>Intended for creating or accessing persistent properties. </p>

</div>
</div>
<a id="a124b1e945be6f5188a3bfab685018008"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a124b1e945be6f5188a3bfab685018008">&#9670;&nbsp;</a></span>makePropertyManagerFromNew()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PROPTYPE &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">PropertyManager</a>&lt; PROPTYPE &gt; makePropertyManagerFromNew </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>propname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="a01227.html#_deprecated000010">Deprecated:</a></b></dt><dd>Use <a class="el" href="a02597.html#a7c72dc50f42e6e4ee36d29cd29ceae85">makeTemporaryProperty()</a> instead.</dd></dl>
<p>Creates a new property whose lifecycle is managed by the returned <a class="el" href="a02597.html" title="This class is intended to manage the lifecycle of properties. ">PropertyManager</a>.</p>
<p>Intended for temporary properties. Shadows any existing properties of matching name and type. </p>

</div>
</div>
<a id="a7c72dc50f42e6e4ee36d29cd29ceae85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c72dc50f42e6e4ee36d29cd29ceae85">&#9670;&nbsp;</a></span>makeTemporaryProperty() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ElementT , typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">PropertyManager</a>&lt; typename <a class="el" href="a02505.html">HandleToPropHandle</a>&lt; ElementT, T &gt;::type &gt; makeTemporaryProperty </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>propname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="a01227.html#_deprecated000009">Deprecated:</a></b></dt><dd>Temporary properties should not have a name.</dd></dl>
<p>Creates a new property whose lifetime is limited to the current scope.</p>
<p>Used for temporary properties. Shadows any existing properties of matching name and type.</p>
<p>Example: </p><div class="fragment"><div class="line">PolyMesh m;</div><div class="line">{</div><div class="line">    <span class="keyword">auto</span> is_quad = makeTemporaryProperty&lt;FaceHandle, bool&gt;(m);</div><div class="line">    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; fh : m.faces()) {</div><div class="line">        is_quad[fh] = (m.valence(fh) == 4);</div><div class="line">    }</div><div class="line">    <span class="comment">// The property is automatically removed from the mesh at the end of the scope.</span></div><div class="line">}</div></div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>The mesh on which the property is created </td></tr>
    <tr><td class="paramname">propname</td><td>(optional) The name of the created property </td></tr>
  </table>
  </dd>
</dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">ElementT</td><td>Element type of the created property, e.g. <a class="el" href="a02241.html" title="Handle for a vertex entity. ">VertexHandle</a>, <a class="el" href="a02245.html" title="Handle for a halfedge entity. ">HalfedgeHandle</a>, etc. </td></tr>
    <tr><td class="paramname">T</td><td>Value type of the created property, e.g., <code>double</code>, <code>int</code>, etc. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="a02597.html" title="This class is intended to manage the lifecycle of properties. ">PropertyManager</a> handling the lifecycle of the property </dd></dl>

</div>
</div>
<a id="a510b1f70ae8b69d9c4639b74c38eebba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a510b1f70ae8b69d9c4639b74c38eebba">&#9670;&nbsp;</a></span>makeTemporaryProperty() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ElementT , typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02597.html">PropertyManager</a>&lt; typename <a class="el" href="a02505.html">HandleToPropHandle</a>&lt; ElementT, T &gt;::type &gt; makeTemporaryProperty </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02313.html">PolyConnectivity</a> &amp;&#160;</td>
          <td class="paramname"><em>mesh</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Creates a new property whose lifetime is limited to the current scope.</p>
<p>Used for temporary properties. Shadows any existing properties of matching name and type.</p>
<p>Example: </p><div class="fragment"><div class="line">PolyMesh m;</div><div class="line">{</div><div class="line">    <span class="keyword">auto</span> is_quad = makeTemporaryProperty&lt;FaceHandle, bool&gt;(m);</div><div class="line">    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; fh : m.faces()) {</div><div class="line">        is_quad[fh] = (m.valence(fh) == 4);</div><div class="line">    }</div><div class="line">    <span class="comment">// The property is automatically removed from the mesh at the end of the scope.</span></div><div class="line">}</div></div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">mesh</td><td>The mesh on which the property is created </td></tr>
  </table>
  </dd>
</dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">ElementT</td><td>Element type of the created property, e.g. <a class="el" href="a02241.html" title="Handle for a vertex entity. ">VertexHandle</a>, <a class="el" href="a02245.html" title="Handle for a halfedge entity. ">HalfedgeHandle</a>, etc. </td></tr>
    <tr><td class="paramname">T</td><td>Value type of the created property, e.g., <code>double</code>, <code>int</code>, etc. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="a02597.html" title="This class is intended to manage the lifecycle of properties. ">PropertyManager</a> handling the lifecycle of the property </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>OpenMesh/Core/Utils/<a class="el" href="a00482_source.html">PropertyManager.hh</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<hr>
<address>
<small>
<a href="http://www.rwth-graphics.de" style="text-decoration:none;">
</a>
Project <b>OpenMesh</b>, 
&copy;&nbsp; Computer Graphics Group, RWTH Aachen.
Documentation generated using 
<a class="el" href="http://www.doxygen.org/index.html">
<b>doxygen</b>
</a>.
</small>
</address>
</body>
</html>
